[Инструкция] Полное руководство по созданию и применению SSH-ключей

1. Что такое SSH-ключ и зачем он нужен

SSH-ключ – это пара криптографических ключей: приватный и публичный. Они основаны на асимметричной криптографии – виде шифрования, при котором один ключ шифрует данные, а другой их расшифровывает. Приватный ключ хранится только у вас и ни с кем не передаётся, а публичный – устанавливается на сервере, куда вы подключаетесь. Когда вы пытаетесь войти на сервер, происходит проверка с помощью этих двух ключей: сервер использует публичный, чтобы удостовериться, что у вас есть соответствующий приватный, что обеспечивает безопасный доступ без пароля. Такой способ гарантирует надёжную аутентификацию и защищает от подбора паролей. Это безопаснее, чем обычный пароль, потому что ключи создаются с помощью надёжной криптографии и имеют гораздо больший уровень защиты. В отличие от пароля, который может быть коротким, простым или украденным, приватный ключ хранится только у вас и не передаётся никому. Даже если злоумышленник перехватит соединение, без вашего приватного ключа и, возможно, пароля к самому ключу он не сможет получить доступ к серверу. Именно поэтому SSH-ключи обеспечивают надёжную аутентификацию и защиту от взлома.

В отличие от пароля, SSH-ключ не требует регулярной смены – его безопасность обеспечивается сложностью криптографии и надёжным хранением приватного ключа. Менять ключ нужно только в случае компрометации или его утери.

2. Создание SSH-ключа и добавление на сервер Debian 12

Чтобы подключаться к серверу через MobaXterm без пароля, нужно создать SSH-ключ и добавить его на сервер. Вот как это сделать правильно:

Откройте MobaXterm и в меню выбери Tools → MobaKeyGen (SSH key generator). Выберите тип ключа RSA длиной 4096 бит, нажми Generate и двигай мышь в окне для генерации случайных данных. Когда ключ сгенерирован, сохраните приватный ключ кнопкой Save private key на компьютер. Затем скопируй весь текст публичного ключа из поля Public key (начинается с ssh-rsa).

После этого подключись по паролу к серверу через MobaXterm и в терминале введи команды, чтобы создать каталог .ssh в домашней папке, установить нужные права и добавить туда твой публичный ключ (вместо "ваш_публичный_ключ_здесь" вставьте скопированный ключ):

mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "ваш_публичный_ключ_здесь" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Права доступа chmod 700 ~/.ssh дают полные права на папку .ssh только её владельцу (чтение, запись и выполнение), остальные пользователи доступа не имеют. Это защищает ключи и файлы конфигурации от посторонних.

Права доступа chmod 600 ~/.ssh/authorized_keys разрешают читать и писать файл authorized_keys только владельцу, запрещая доступ другим. Если файл открыт для других, это создаёт угрозу безопасности.

Обратите внимание: в командах используется символ тильда ~ – это сокращение для домашней папки в Linux.

Если хотите проверить, правильно ли добавился ключ, откройте файл командой:

nano ~/.ssh/authorized_keys

Чтобы выйти из редактора nano, нажми Ctrl+X.

В некоторых случаях nano может быть не установлен, тогда

vim ~/.ssh/authorized_keys

Здесь ~ – это сокращение для домашней папки пользователя. После внесения изменений в vim, чтобы сохранить и выйти, нажмите Esc, затем введите :wq и нажмите Enter

Или:

cat ~/.ssh/authorized_keys

Если используете PuTTY, то создайте ключ через PuTTYgen (RSA 4096 бит), добавьте публичный ключ на сервер теми же командами, а в настройках PuTTY укажите приватный ключ для подключения.

Создании ключа в терминале:

ssh-keygen -t rsa -b 4096 -C "ваш_email@example.com"

2.1 Конвертация ключа в MobaXterm

В MobaXterm внутри инструмента генерации ключей (MobaKeyGen) предусмотрена функция экспорта ключа в формат OpenSSH:
1. Откройте Tools → MobaKeyGen (SSH key generator) в MobaXterm.
2. Загрузите файл .ppk с помощью кнопки Load.
3. В верхнем меню выберите Conversions.
4. В появившемся списке доступны варианты экспорта:
Export OpenSSH key – экспорт в классический формат OpenSSH.
Export OpenSSH key (force new file format) – экспорт в более новый формат OpenSSH.

Сохраните полученный файл – это приватный ключ в формате OpenSSH, который используется в большинстве Unix-подобных систем и сервисов.

OpenSSH – более распространённый формат для хранения приватных ключей. Иногда для использования или хранения ключа требуется конвертация из формата PuTTY (.ppk), поддерживаемого лишь PuTTY, MobaXterm и Termius, в OpenSSH. Это нужно, если вы работаете с системами, сервисами или парольными менеджерами, которые понимают только OpenSSH, например на серверах Linux или macOS.

Выбор между классическим и новым форматами OpenSSH зависит от совместимости: классический поддерживается большинством клиентов, новый – только последними версиями OpenSSH.

Конвертация не влияет на безопасность или длину ключа, меняется только формат хранения.

Защита приватного ключа паролем

При создании SSH-ключа рекомендуется задавать пароль (passphrase) для дополнительной безопасности. Это обеспечивает защиту приватного ключа: даже в случае его кражи без пароля использовать ключ будет невозможно.

Passphrase – это пароль, который защищает твой приватный ключ, словно замок на дверь. Он добавляет дополнительный уровень безопасности, не позволяя использовать ключ без твоего разрешения. При этом можно оставить поле passphrase пустым, если хочешь использовать ключ без пароля – тогда защита будет слабее, но удобнее.

3. Отключение входа по паролю

После успешного добавления SSH-ключа на сервер рекомендуется рассмотреть возможность отключения входа по паролю. Это значительно повышает безопасность, так как доступ станет возможен только с помощью ключа, исключая риск подбора паролей.

Однако сначала убедитесь, что SSH-ключ работает корректно и ты можете подключаться без проблем. Для отключения паролей в настройках SSH-сервера откройте файл

sudo nano /etc/ssh/sshd_config

Если nano не установлен, можно использовать vim:

sudo vim /etc/ssh/sshd_config

После внесения изменений в nano нажмите Ctrl+X, затем Y и Enter, чтобы сохранить и выйти.
В vim: нажмите Esc, потом введите :wq и нажмите Enter.

Обратите внимание, что для редактирования этого файла нужны права администратора (sudo).

и измените или добавь строку:

PasswordAuthentication no

После этого перезапустите SSH-службу командой:

sudo systemctl restart sshd

Рекомендуемые способы хранения

На бумажном носителе: можно распечатать приватный ключ или его копию – называют "paperkey".

Чтобы просмотреть содержимое приватного ключа, выполните команду:

cat ~/.ssh/id_rsa

Выведется текст, начинающийся со строки:

-----BEGIN OPENSSH PRIVATE KEY-----

и заканчивающийся:

-----END OPENSSH PRIVATE KEY-----

Выделите полностью весь этот вывод целиком и скопируйте (в вашем терминале обычно мышкой или сочетанием Ctrl+Shift+C). Затем сохраните в файл или распечатайте.

QR-код

Сгенерируйте QR-код онлайн (например, на https://qrcode-monkey.com/)

ИЛИ

Сгенерируйте QR-код из файла ключа командой:

qrencode -o id_rsa.png < ~/.ssh/id_rsa

Если qrencode не установлен, установите командой:

sudo apt-get update
sudo apt-get install qrencode